Systems of non-linear equations

Systems of linear equations are the subject of linear algebra and there are foolproof methods for solving systems of linear equations. Systems of algebraic equations that include non-linear terms such as quadratic or cubic equations or special functions like logarithm or sine and cosine are more difficult to solve. Maple has the ability to solve such systems including non-linear equations but it often requires some careful analysis by you to get the right answers.

The approach for non-linear systems of equations is the same as for linear systems. First try to use the solve command. However, unlike linear systems, there are situations with non-linear equations where the solve command will return a result with one or more RootOf terms or may even fail to return any result at all.

If the solve command returns a symbolic result that includes one or more RootOf terms, then try to solve using the additional symbolic algorithms that allvalues knows. Do this by naming the solution of the solve command and passing that name as the argument of the allvalues command.

If the solve command fails to return a symbolic result at all or the allvalues command doesn't work either, then try to solve the system numerically by using the fsolve command. A word of caution about solving numerically in Maple for non-linear equations. If there are more than one root, then fsolve may find a root, but fail to find all roots.

The correct approach is to plot the equations using implicitplot and to visually confirm that a desired solution exists. Use the figure to estimate the location of all desired roots. Then use the fsolve command individually to find each of the roots. The fsolve command allows you to enter a range of x and y values that contains the desired intersection point. The numerical solution method is a successive approximation method and it only finds an approximation, not an exact solution. The range must be reasonably close to the final answer for the method to find the correct result. When there are multiple roots the method finds one of them and then stops looking. So the command must be executed separately to find each root.